﻿using System;

namespace Fennec
{
    public class FabriqueCase
    {
        private Case[,] cases;

        public FabriqueCase()
        {
            Array types = Enum.GetValues(typeof(ECaseType));
            Array speciales = Enum.GetValues(typeof(ECaseRessourceSpéciale));
            this.cases = new Case[types.Length, speciales.Length];

            cases[(int)ECaseType.CASE_DESERT, (int)ECaseRessourceSpéciale.CASE_SANS_RESSOURCE_SPECIALE] =
                new CaseDésert();
            cases[(int)ECaseType.CASE_MONTAGNE, (int)ECaseRessourceSpéciale.CASE_SANS_RESSOURCE_SPECIALE] =
                new CaseMontagne();
            cases[(int)ECaseType.CASE_PLAINE, (int)ECaseRessourceSpéciale.CASE_SANS_RESSOURCE_SPECIALE] =
                new CasePlaine();

            cases[(int)ECaseType.CASE_DESERT, (int)ECaseRessourceSpéciale.CASE_FER] =
                new CaseFer(new CaseDésert());
            cases[(int)ECaseType.CASE_MONTAGNE, (int)ECaseRessourceSpéciale.CASE_FER] =
                new CaseFer(new CaseMontagne());
            cases[(int)ECaseType.CASE_PLAINE, (int)ECaseRessourceSpéciale.CASE_FER] =
                new CaseFer(new CasePlaine());

            cases[(int)ECaseType.CASE_DESERT, (int)ECaseRessourceSpéciale.CASE_FRUIT] =
                new CaseFruit(new CaseDésert());
            cases[(int)ECaseType.CASE_MONTAGNE, (int)ECaseRessourceSpéciale.CASE_FRUIT] =
                new CaseFruit(new CaseMontagne());
            cases[(int)ECaseType.CASE_PLAINE, (int)ECaseRessourceSpéciale.CASE_FRUIT] =
                new CaseFruit(new CasePlaine());
        }

        public Case getCase(ECaseType type, ECaseRessourceSpéciale ressource)
        {
            return this.cases[(int)type, (int)ressource];
        }
    }
}